/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.udistrisisbici.negocio.administracion;

import com.udistrisisbici.dao.AdministradorDao;
import com.udistrisisbici.dao.BicicletaDao;
import com.udistrisisbici.dao.UsuarioDao;
import com.udistrisisbici.exception.DaoException;
import com.udistrisisbici.vo.AdministradorVO;
import com.udistrisisbici.vo.BicicletaVO;
import com.udistrisisbici.vo.UsuarioVO;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author nicardonaa
 */
public class UdistriSisbiciFacade {

    public static com.udistrisisbici.util.logs.Logger logger;

    static {
        logger = com.udistrisisbici.util.logs.Logger.getLogger(UdistriSisbiciFacade.class);
    }

    public AdministradorVO buscarAdministradorPorUsuarioClave(String usuario, String clave) {

        logger.info(logger.getLogInicio("buscarAdministradorPorUsuarioClave", usuario + " - " + clave));
        long t1 = System.currentTimeMillis();
        AdministradorDao adminDao;
        AdministradorVO admin = null;

        try {
            adminDao = new AdministradorDao();
            admin = adminDao.buscarAdministradorPorUsuarioClave(usuario, clave);

        } catch (DaoException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        }

        long t2 = System.currentTimeMillis();
        logger.info(logger.getLogFin("buscarAdministradorPorUsuarioClave", (t2 - t1)));

        return admin;
    }

    public boolean crearUsuario(UsuarioVO usuarioVO, BicicletaVO bicicletaVO) {

        logger.info(logger.getLogInicio("crearUsuario", usuarioVO + " - " + bicicletaVO));
        long t1 = System.currentTimeMillis();

        UsuarioDao usuDao;
        BicicletaDao biciDao;
        int respuestaUsu = 0;
        int respuestaBici = 0;
        boolean respuestaTotal = false;

        try {
            usuDao = new UsuarioDao();
            respuestaUsu = usuDao.insertarUsuario(usuarioVO);
        } catch (DaoException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (respuestaUsu != 0)  {

            try {
                biciDao = new BicicletaDao();
                respuestaBici = biciDao.insertarBicicleta(bicicletaVO);
            } catch (DaoException ex) {
                Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        if (respuestaUsu != 0 && respuestaBici != 0){
            respuestaTotal = true;
        }
        long t2 = System.currentTimeMillis();
        logger.info(logger.getLogFin("crearUsuario", (t2 - t1)));
        
        return respuestaTotal;
    }
    public boolean crearBici(UsuarioVO usuarioVO, BicicletaVO bicicletaVO) {

        logger.info(logger.getLogInicio("crearBici", usuarioVO + " - " + bicicletaVO));
        long t1 = System.currentTimeMillis();

        UsuarioDao usuDao;
        BicicletaDao biciDao;
        int respuestaUsu = 0;
        int respuestaBici = 0;
        boolean respuestaTotal = false;

        try {
                biciDao = new BicicletaDao();
                respuestaBici = biciDao.insertarBicicleta(bicicletaVO);
            } catch (DaoException ex) {
                Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
            }
        

        if (respuestaBici != 0){
            respuestaTotal = true;
        }
        long t2 = System.currentTimeMillis();
        logger.info(logger.getLogFin("crearUsuario", (t2 - t1)));
        
        return respuestaTotal;
    }
    public List<UsuarioVO> buscarUsuario(UsuarioVO usuarioVO) {
        
        logger.info(logger.getLogInicio("buscarUsuario", usuarioVO.toString()));
        long t1 = System.currentTimeMillis();

        UsuarioDao usuDao;
        List<UsuarioVO> usuario = new ArrayList<UsuarioVO>();

        try {
            usuDao = new UsuarioDao();
            usuario = usuDao.buscarUsuario(usuarioVO);
        } catch (DaoException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        long t2 = System.currentTimeMillis();
        logger.info(logger.getLogFin("buscarUsuario", (t2 - t1)));

        return usuario;
    }
    public List<BicicletaVO> buscarBici(BicicletaVO bicicletaVO) {
        
        logger.info(logger.getLogInicio("buscarBici", bicicletaVO.toString()));
        long t1 = System.currentTimeMillis();

        BicicletaDao biciDao;
        List<BicicletaVO> bicicleta = new ArrayList<BicicletaVO>();

        try {
            biciDao = new BicicletaDao();
            bicicleta = biciDao.buscarBici(bicicletaVO);
        } catch (DaoException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        long t2 = System.currentTimeMillis();
        logger.info(logger.getLogFin("buscarUsuario", (t2 - t1)));

        return bicicleta;
    }
    public boolean buscarUsuarioPorId(String id) {
        
        logger.info(logger.getLogInicio("buscarUsuarioPorId", id));
        long t1 = System.currentTimeMillis();

        UsuarioDao usuDao;
        boolean respuesta=false;

        try {
            
            usuDao = new UsuarioDao();
            UsuarioVO usuario;
            usuario = usuDao.buscarUsuarioPorId(id);
            
            if(usuario != null){
                respuesta=true;
            }
            
        } catch (DaoException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        long t2 = System.currentTimeMillis();
        logger.info(logger.getLogFin("buscarUsuario", (t2 - t1)));

        return respuesta;
    }
     public boolean buscarUsuarioPorCodBarras(String id) {
        
        logger.info(logger.getLogInicio("buscarUsuarioPorCodBarras", id));
        long t1 = System.currentTimeMillis();

        BicicletaDao biciDao;
        boolean respuesta=false;

        try {
            
            biciDao = new BicicletaDao();
            BicicletaVO bicicleta;
            bicicleta = biciDao.buscarUsuarioPorCodBarras(id);
            
            if(bicicleta != null){
                respuesta=true;
            }
            
        } catch (DaoException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(UdistriSisbiciFacade.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        long t2 = System.currentTimeMillis();
        logger.info(logger.getLogFin("buscarUsuarioPorCodBarras", (t2 - t1)));

        return respuesta;
    }
}
